package com.socialin.picsin.camera.view;

import java.util.List;

import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.view.SurfaceHolder.Callback;

public interface ICamera {
	
	public static final int FLASH_MODE_INVALID = -1;
	public static final int FLASH_MODE_OFF = FLASH_MODE_INVALID + 1;
	public static final int FLASH_MODE_ON = FLASH_MODE_OFF + 1;
	public static final int FLASH_MODE_AUTO = FLASH_MODE_ON + 1;
	
	
	public Camera getCamera();
	
	public void setBrightness(int value);
	public boolean brightnessSupported();
	public int getMinBrightness();
	public int getMaxBrightness();
	public int getBrightness();
	
	public int getMinContrast();
	public int getMaxContrast();
	public boolean contrastSupported();
	public void setContrast(int value);
	public int getContrast();
	
	public int getMinSharpness();
	public int getMaxSharpness();
	public boolean sharpnessSupported();
	public void setSharpness(int value);
	public int getSharpness();
	
	public int getMinSaturation();
	public int getMaxSaturation();
	public boolean saturationSupported();
	public void setSaturation(int value);
	public int getSaturation();
	
	public String[] getWhiteBalanceValues();
	public void setWhiteBalance(String value);
	public String getWhiteBalance();
	
	public String[] getEffects();
	public void setEffect(String value);
	public String getEffect();
	
	public String[] getSceneModeValues();
	public void setSceneMode(String value);
	public String getSceneMode();
	
	public String[] getIsoValues();
	public void setIso(String value);
	public String getIsoMode();
	
	public void setFlashMode(int flashMode);
	public int getFlashMode();
	public int[] getFlashModeValues();
	public boolean isThreeFlashModesSupported();
	
	public String[] getFocusModeValues();
	public void setFocusMode(String value);
	public String getFocusMode();
	
	public int getZoomMax();
	public boolean zoomSupported();
	public boolean zoomSmoothSupported();
	public void setZoom(int value);
	public int getZoom();
	public List<Integer> getZoomFactors();
	
	public void setPictureSize(int width, int height);
	public String[] getPictureSizeValues();
	public String getPictureSize();
	public void setSurfaceChangeCallback(Callback callback);
	
	public void setRotation(int value);
	
	public String getDefaultProperties();
	public void setDefaultProperties();
	public String getProperties();
	public void setProperties(String props);
	
	public void takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback jpeg);
	
	public boolean getPictureTaking();
	public void setPictureTaking(boolean value);
	
	public boolean commit();
	
	public int getNumberOfCameras();
	public void setCameraIndex(int index);
	public int  getCameraIndex();
	public void setPlayShutter(boolean pIsPlayShutter);
	public boolean isPlayShutter();
	
	public void setImageSize(int width, int height);
	public int getImageWidth();
	public int getImageHeight();
	
	public void releaseCamera();
	
	public int getOrientation();
	public void setOrientation(int val);
}
